#include <iostream>
using namespace std;
using ll = long long;
// int fib (int n)
// {
//     if (n <= 2)
//         return 1;
//     else
//         return fib(n - 1) + fib(n - 2);
// }

// 记忆化
const int N = 1e5 + 3;
ll dp[N];
ll fib(int n)
{
    if (dp[n]) // 如果当前下标dp数组对应值为0,说明还没有展开过;不为0,说明在之前展开过程中已经有了不必重复展开
        return dp[n];
    if (n < 2)
        return 1;
    return dp[n] = fib(n - 1) + fib(n - 2);
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n;
    cin >> n;
    ll ret = fib(n);
    cout << ret << endl;
    return 0;
}